Jac Caglianone tallied two hits, including his 10th home run of the season, while Isaac Collins delivered a two-RBI double in the fourth to cap a four-run frame as the Kansas City Royals earned a 6-5 win over the St. Louis Cardinals.